# nbi:hide_in
from __future__ import print_function
from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
import nbinteract as nbi
from IPython.display import display
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.pyplot import figure, savefig
from pandas import DataFrame
from IPython.display import HTML, IFrame
import sys 
sys.path.append('/home/nico/.local/lib/python3.8/site-packages')
from lcapy import Circuit


fig_sz_x = 10
fig_sz_y = 10
fig_dpi = 80 # dpi

fig_font_family = 'Ubuntu'
fig_font_size = 14

plt.rcParams.update({'font.size':fig_font_size})
plt.rcParams.update({'font.family':fig_font_family})

Ángulos

Veamos que es un ángulo.

Un ángulo $AoB$ consta de dos rayos R1 y R2 con un vértice común O. Se suele interpreta a un ángulo como la rotación del rayo R1 sobre R2. En este caso R1 se llama lado inicial y a R2 se lo llama lado final del ángulo. Si la rotación es en sentido antihorario, el ángulo se lo considera positivo y si la rotación es en sentido horario se lo considera negativo.

Medida angular

La medida de un ángulo es la cantidad de rotación respecto al vértice requerida para mover R1 sobre R2. De manera intuitiva, esto es cuánto se "abre" el ángulo.

Definición de grado sexagecimal: Un ángulo de medida $1°$ se forma al rotar el lado inicial $\frac{1}{360}$ de una revolución completa.

Parece mas complicado de lo que es, esto quiere decir que dividimos a la circunferencia en 360 partes (es como cortar una pizza pero en mas porciones). La siguiente imagen lo muestra, pero tenga en cuenta que no podemos dibujar todas las lineas ya que seria muy difícil de visualizar.

Seguramente les recuerde a un transportador, ¿será casualidad?

Ahora veremos otra unidad de ángulos que es la que se utiliza por excelencia en el área técnica el radian.

Definición 1 de radian: Un ángulo de medida $1$ $radian$ es la cantidad que se abre un ángulo que se mide a lo largo de un arco de un circulo de radio unitario con centro en en el vértice del ángulo. $$$$ Definición 2 de radian: Un radian abreviado rad es el ángulo que teniendo su vértice en el centro de una circunferencia sus lados determinan sobre la misma al cortar un arco de circunferencia de longitud igual al radio.

Esto quiere decir que el ángulo vale $1[rad]$ cuando el arco de circunferencia determinado por los dos rayos tiene una longitud igual al valor del radio.

¿Por qué usar esta medida tan extraña?

Al principio puede parecer un poco raro pero tiene mucho utilidad. Esta medida se basa en la longitud total de la circunferencia y este no es un número cualquiera, como ustedes ya saben por razones de la naturaleza ese número vale $2\pi$

Utilizar ángulos en radianes es de mucha utilidad ya que muchos ángulos útiles son múltiplos y submúltiplos de $\pi$. Por otra parte, verán mas adelante que en matemática es la unidad mas utilizada.

La siguiente animación pretende mostrar para cada ángulo el valor de la longitud del arco llamada S.

Para ver la animación solo tienen que presionar play.
# nbi:hide_in
%matplotlib inline
from matplotlib.animation import FuncAnimation

plt.rcParams.update({'font.size':fig_font_size})
plt.rcParams.update({'font.family':fig_font_family})

plt.style.use('seaborn-pastel')
N = 200
N1 = 9
TWOPI = 2*np.pi
t  = np.linspace(0, 2*np.pi, N)
t1 = np.array([0, 1, 2, 3, np.pi, 4, 5, 6, 2*np.pi])
x = np.cos(t) 
y = np.sin(t)
x1 = np.array([np.cos(0),np.cos(1),np.cos(2),np.cos(3),np.cos(np.pi),np.cos(4),np.cos(5),np.cos(6),np.cos(2*np.pi)],dtype='float') 
y1 = np.array([np.sin(0),np.sin(1),np.sin(2),np.sin(3),np.sin(np.pi),np.sin(4),np.sin(5),np.sin(6),np.sin(2*np.pi)],dtype='float') 
    
figure
fig  = plt.figure(figsize=(6, 6), dpi= fig_dpi, facecolor='w', edgecolor='k')
ax = plt.axes(xlim=(-1.1,1.1), ylim=(-1.1,1.1))
plt.axhline(0, color="grey")
plt.axvline(0, color="grey")
plt.grid('on')
plt.xlabel('$ \\theta[rad]$',fontsize=14)
plt.title("$Radianes$" )
titas = ['$\\theta=0[rad]$','$\\theta=1[rad]$', '$\\theta=2[rad]$', '$\\theta=3[rad]$', 
         '$\\theta=\pi[rad]$', '$\\theta=4[rad]$', '$\\theta=5[rad]$', 
         '$\\theta=6[rad]$', '$\\theta=2\pi[rad]$']

texto = ['$S=0$','$S=r$', '$s=2r$', '$s=3r$', '$s=\pi r$', '$s=4r$', '$s=5r$', 
         '$s=6r$', '$s=2\pi r$']

ax.plot(x,y)
#ax.legend(loc='upper right')



redDot, = ax.plot([], [], 'ro')
text = ax.text(.8,.95,'',fontsize=16,bbox=dict(facecolor='red', alpha=.3),
               horizontalalignment='center', verticalalignment='center')

tita = ax.text(.5,.2,'',fontsize=16,bbox=dict(facecolor='lightblue', alpha=1),
               horizontalalignment='center', verticalalignment='center')


arc,   = ax.plot([],[],'r', lw=2)
arc1,   = ax.plot([],[],'blue', lw=2)
line, = plt.plot(x,y,'r', lw=2)

def init():
    line, = ax.plot(1,0, 'ro')
    return line,


def animate(i):
    plt.close() # por algun motivo que desconozco poniendolo aca borra el plot extra que aparece.
    line.set_data([0,x1[i]], [0,y1[i]])
    t = np.linspace(0,t1[i],1000)
    arc.set_data(np.cos(t),np.sin(t))
    arc1.set_data(.2*np.cos(t),.2*np.sin(t))
    text.set_text(texto[i])
    tita.set_text(titas[i] )
    
    return redDot,  arc, arc1, text, tita,line,

# create animation using the animate() function
anim = FuncAnimation(fig, animate, frames=N1, interval=400, blit=True, repeat=True)
                                      

HTML(anim.to_jshtml())

Relación entre grados y radianes

De lo visto hasta ahora podemos notar que media vuelta corresponden a $180°$ en el sistema sexagecimal. En el caso del sistema en radianes, media vuelta corresponde a $\pi[rad]$. Por lo cual ambas medidas son equivalentes, solo que con distintas unidades. Es como decir que $100ml$ es lo mismo que $100cc$ al medir el volumen de un líquido.

$$180° = \pi [rad]$$$$1° = \frac{\pi}{180}$$$$1° = 0,01745$$

De la misma forma si despejamos los radianes obtenemos:

$$\pi [rad] = 180° $$$$1 [rad = ]\frac{180°}{\pi}$$$$1 [rad] = 57,246° $$

Utilizando regla de 3 simple podemos pasar ángulos de una unidad a ora.

Ejemplo n° 1: Pasar el ángulo de 60° a radianes. Solución: sabemos que $180° = \pi [rad]$ por lo cual utilizando regla de 3 nos queda $$180° -> \pi [rad]$$ $$60° ->x[rad] $$ $$$$ $$x = \frac{60° * \pi[rad]}{180°} $$ $$$$ $$x=\frac{\pi}{3}[rad]$$ Noten algo muy importante, al escribír las unidades, nos aseguramos que los ° se cancelan quedando [rad] como debe ser. Esto nos ayuda a asegurarnos de hacer bien las cosas. Si las unidades no nos quedan como queremos debemos revisar el resultado. Siempre revisar las unidades
Ejemplo n° 2: Pasar el ángulo de $\frac{6}{5}\pi[rad]$ a grados sexagecimales. Solución: sabemos que $180° = \pi [rad]$ por lo cual utilizando regla de 3 nos queda $$\pi[rad] -> 180°$$ $$\frac{6}{5}\pi[rad]->x° $$ $$$$ $$x = \frac{\frac{6}{5}\pi[rad]*180°}{\pi[rad]} $$ $$$$ $$x=216°$$ Nuevamente preste atención a las unidades y no se olvide de comprobarlo.

Ejercicios

Antes de comenzar no olvide presionar el botón Show Widgets para poder ver la animación

Ejercicio n° 1: Convierta los siguientes ángulos a radianes. En caso de corresponder, redondear con 3 decimales y usar "." NO ",".
nbi.short_answer('20°', lambda x: float(x)  == np.round((20/180)*np.pi,3))
nbi.short_answer('270°', lambda x: float(x)  == np.round((270/180)*np.pi,3))
nbi.short_answer('45°', lambda x: float(x)  == np.round((45/180)*np.pi,3))
nbi.short_answer('150°', lambda x: float(x)  == np.round((150/180)*np.pi,3))
Ejercicio n° 2: Convierta los siguientes ángulos a grados sexagecimales.
nbi.short_answer('π/2[rad]', lambda x: float(x)  == np.round(((np.pi/2)*180)/np.pi,3))
nbi.short_answer('π/6[rad]', lambda x: float(x)  == np.round(((np.pi/6)*180)/np.pi,3))
nbi.short_answer('2π/5[rad]', lambda x: float(x)  == np.round(((2*np.pi/5)*180)/np.pi,3))
nbi.short_answer('3π/4[rad]', lambda x: float(x)  == np.round(((3*np.pi/4)*180)/np.pi,3))

Ángulos notables

Con las animaciones anteriores queda claro que los valores se repiten en módulo en cada cuadrante, por lo cual definiendo solo los ángulos del primer cuadrante y utilizando propiedades, como la que acabamos de describir de los signos, podemos obtener su valor para cualquier ángulo. Esto escapa de esta materia pero conocerlo les va a permitir tener una mayor comprensión al momento de graficarlas.

El método es muy simple, voy a describir paso a paso como completar la siguiente tabla:

Función $0[rad]$ $\frac{\pi}{6}[rad]$ $\frac{\pi}{4}[rad]$ $\frac{\pi}{3}[rad]$ $\frac{\pi}{2}[rad]$
$sen$ --- --- --- --- ---
$cos$ --- --- --- --- ---
$tg$ --- --- --- --- ---

Para el caso del seno los casos son los siguientes:

  1. Rellenar los espacios con los números 0, 1, 2, 3, 4.

  2. Obtener la raíz cuadrada de esos números.

  3. Dividir todos los resultados por 2.

Pasos $0[rad]$ $\frac{\pi}{6}[rad]$ $\frac{\pi}{4}[rad]$ $\frac{\pi}{3}[rad]$ $\frac{\pi}{2}[rad]$
$1$ $0$ $1$ $2$ $3$ $4$
$2$ $\sqrt{0}$ $\sqrt{1}$ $\sqrt{2}$ $\sqrt{3}$ $\sqrt{4}$
$3$ $\frac{\sqrt{0}}{2}$ $\frac{\sqrt{1}}{2}$ $\frac{\sqrt{2}}{2}$ $\frac{\sqrt{3}}{2}$ $\frac{\sqrt{4}}{2}$
$4$ $0$ $\frac{1}{2}$ $\frac{\sqrt{2}}{2}$ $\frac{\sqrt{3}}{2}$ $1$

Para el $coseno$ es el mismo procedimiento solo que en vez de ir de $0$ a $4$, tiene que ir de $4$ a $0$. Para el caso de la $tg$ hay que dividir el valor del $seno$ por el valor del $coseno$.

La tabla queda de la siguiente forma:

Función $0[rad]$ $\frac{\pi}{6}[rad]$ $\frac{\pi}{4}[rad]$ $\frac{\pi}{3}[rad]$ $\frac{\pi}{2}[rad]$
$sen$ $0$ $\frac{1}{2}$ $\frac{\sqrt{2}}{2}$ $\frac{\sqrt{3}}{2}$ $1$
$cos$ $1$ $\frac{\sqrt{3}}{2}$ $\frac{\sqrt{2}}{2}$ $\frac{1}{2}$ $0$
$tg$ $0$ $\frac{\sqrt{3}}{3}$ $1$ $\sqrt{3}$ $\nexists $

¡¡Hasta ahora usamos ángulos en radianes, por lo cual la calculadora debe estar en radianes!!

Movimiento circular

Para finalizar queda ver un último concepto que utilizaremos al estudiar señales.

Supongamos que un punto se mueve a lo largo de una circunferencia, como muestra la animación. Hay dos formas de describir su movimiento velocidad lineal y velocidad angular.

# nbi:hide_in
%matplotlib inline
from matplotlib.animation import FuncAnimation

plt.rcParams.update({'font.size':fig_font_size})
plt.rcParams.update({'font.family':fig_font_family})

plt.style.use('seaborn-pastel')
N = 200
TWOPI = 2*np.pi
t = np.linspace(0, 2*np.pi, N)


x = np.cos(t) 
y = np.sin(t) 
    

fig, ax = plt.subplots(figsize=(6, 6), dpi= fig_dpi, facecolor='w', edgecolor='k')
plt.axhline(0, color="grey")
plt.axvline(0, color="grey")
plt.grid('on')
plt.xlabel('$ x$',fontsize=14)
plt.ylabel('$y$',fontsize=14,rotation='horizontal')
plt.title("Velocidad" )

plt.plot(x,y)

ax = plt.axis([-1.1,1.1,-1.1,1.1])

redDot, = plt.plot([], [], 'ro')
plt.text(.1,.1,'$\\theta$',fontsize=16,horizontalalignment='center', verticalalignment='center')
plt.text(.8,.8,'$S$',fontsize=16,horizontalalignment='center', verticalalignment='center')
arc,   = plt.plot([],[],'r', lw=2)

def init():
    line, = ax.plot(1,0, 'ro')
    return line,


def animate(i):
    plt.close() # por algun motivo que desconozco poniendolo aca borra el plot extra que aparece.
    redDot.set_data(x[i],y[i])
    t1 = np.linspace(0,t[i],N)
    arc.set_data(np.cos(t1),np.sin(t1))


    return redDot, arc,

# create animation using the animate() function
anim = FuncAnimation(fig, animate, frames=N, interval=40, blit=True, repeat=True)
                                      

HTML(anim.to_jshtml())
Velocidad Lineal: Es la razón a la que esta cambiando la distancia recorrida. En otras palabras es la distancia recorrida dividida por el tiempo transcurrido. $$$$ $$v = \frac{S}{t} [m/s]$$ $$$$ Donde $S$ es el arco de circunferencia en $metros$ y $t$ el tiempo transcurrido en $segundos$.
Velocidad angular: Es la razón a la que esta cambiando el ángulo central $\theta$. En otras palabras es el número de radianes que cambia este ángulo dividido por el tiempo transcurrido. $$$$ $$\omega = \frac{\theta}{t} [rad/s]$$ $$$$ Donde $\theta$ es el ángulo recorrido en $radianes$ y $t$ el tiempo transcurrido en $segundos$.

Este último sera de mucha importancia para caracterizar las señales senoidales.

Podemos relacionar ambas de la siguiente forma:

$$v = \frac{S}{t}$$$$s = \theta*r$$

($r$ es el radio)

por lo cual queda

$$\boxed{v = r* \theta}$$

Esto es todo. A partir de ahora usaremos todo lo visto para trabajar con las tan esperadas señales.

Copyright

The notebook is provided as Open Educational Resource. Feel free to use the notebook for your own educational purposes. The text is licensed under Creative Commons Attribution-NoComercial 4.0 Internacional, the code of the IPython examples under the MIT license. Please attribute the work as follows: Aplicaciones de electrónica Analógica by Nicolás Ferragamo.

Licencia Creative Commons